home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / QD3DGeometry.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  62.9 KB  |  2,116 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        QD3DGeometry.h
  3.  
  4.      Contains:    Q3Geometry methods                                        
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.6
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1995-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QD3DGEOMETRY__
  18. #define __QD3DGEOMETRY__
  19.  
  20. #ifndef __QD3D__
  21.     #include <QD3D.h>
  22. #endif
  23.  
  24.  
  25. #ifndef __QD3DSET__
  26.     #include <QD3DSet.h>
  27. #endif
  28.  
  29.  
  30.  
  31.  
  32. #if PRAGMA_ONCE
  33. #pragma once
  34. #endif
  35.  
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif
  39.  
  40. #if PRAGMA_IMPORT
  41. #pragma import on
  42. #endif
  43.  
  44. #if PRAGMA_STRUCT_ALIGN
  45.     #pragma options align=power
  46. #elif PRAGMA_STRUCT_PACKPUSH
  47.     #pragma pack(push, 2)
  48. #elif PRAGMA_STRUCT_PACK
  49.     #pragma pack(2)
  50. #endif
  51.  
  52. #if PRAGMA_ENUM_ALWAYSINT
  53.     #pragma enumsalwaysint on
  54. #elif PRAGMA_ENUM_OPTIONS
  55.     #pragma option enum=int
  56. #elif PRAGMA_ENUM_PACK
  57.     #if __option(pack_enums)
  58.         #define PRAGMA_ENUM_PACK__QD3DGEOMETRY__
  59.     #endif
  60.     #pragma options(!pack_enums)
  61. #endif
  62.  
  63. /******************************************************************************
  64.  **                                                                             **
  65.  **                                Geometry Routines                             **
  66.  **                                                                             **
  67.  *****************************************************************************/
  68. EXTERN_API_C( TQ3ObjectType )
  69. Q3Geometry_GetType                (TQ3GeometryObject         geometry);
  70.  
  71. EXTERN_API_C( TQ3Status )
  72. Q3Geometry_GetAttributeSet        (TQ3GeometryObject         geometry,
  73.                                  TQ3AttributeSet *        attributeSet);
  74.  
  75. EXTERN_API_C( TQ3Status )
  76. Q3Geometry_SetAttributeSet        (TQ3GeometryObject         geometry,
  77.                                  TQ3AttributeSet         attributeSet);
  78.  
  79. EXTERN_API_C( TQ3Status )
  80. Q3Geometry_Submit                (TQ3GeometryObject         geometry,
  81.                                  TQ3ViewObject             view);
  82.  
  83.  
  84.  
  85. /******************************************************************************
  86.  **                                                                             **
  87.  **                            Box    Data Structure Definitions                     **
  88.  **                                                                             **
  89.  *****************************************************************************/
  90.  
  91. struct TQ3BoxData {
  92.     TQ3Point3D                         origin;
  93.     TQ3Vector3D                     orientation;
  94.     TQ3Vector3D                     majorAxis;
  95.     TQ3Vector3D                     minorAxis;
  96.     TQ3AttributeSet *                faceAttributeSet;            /* Ordering : Left, right,     */
  97.                                                                 /*              front, back,     */
  98.                                                                 /*              top, bottom    */
  99.     TQ3AttributeSet                 boxAttributeSet;
  100. };
  101. typedef struct TQ3BoxData                TQ3BoxData;
  102. /******************************************************************************
  103.  **                                                                             **
  104.  **                                Box Routines                                 **
  105.  **                                                                             **
  106.  *****************************************************************************/
  107. EXTERN_API_C( TQ3GeometryObject )
  108. Q3Box_New                        (const TQ3BoxData *        boxData);
  109.  
  110. EXTERN_API_C( TQ3Status )
  111. Q3Box_Submit                    (const TQ3BoxData *        boxData,
  112.                                  TQ3ViewObject             view);
  113.  
  114. EXTERN_API_C( TQ3Status )
  115. Q3Box_SetData                    (TQ3GeometryObject         box,
  116.                                  const TQ3BoxData *        boxData);
  117.  
  118. EXTERN_API_C( TQ3Status )
  119. Q3Box_GetData                    (TQ3GeometryObject         box,
  120.                                  TQ3BoxData *            boxData);
  121.  
  122. EXTERN_API_C( TQ3Status )
  123. Q3Box_EmptyData                    (TQ3BoxData *            boxData);
  124.  
  125. EXTERN_API_C( TQ3Status )
  126. Q3Box_SetOrigin                    (TQ3GeometryObject         box,
  127.                                  const TQ3Point3D *        origin);
  128.  
  129. EXTERN_API_C( TQ3Status )
  130. Q3Box_SetOrientation            (TQ3GeometryObject         box,
  131.                                  const TQ3Vector3D *    orientation);
  132.  
  133. EXTERN_API_C( TQ3Status )
  134. Q3Box_SetMajorAxis                (TQ3GeometryObject         box,
  135.                                  const TQ3Vector3D *    majorAxis);
  136.  
  137. EXTERN_API_C( TQ3Status )
  138. Q3Box_SetMinorAxis                (TQ3GeometryObject         box,
  139.                                  const TQ3Vector3D *    minorAxis);
  140.  
  141. EXTERN_API_C( TQ3Status )
  142. Q3Box_GetOrigin                    (TQ3GeometryObject         box,
  143.                                  TQ3Point3D *            origin);
  144.  
  145. EXTERN_API_C( TQ3Status )
  146. Q3Box_GetOrientation            (TQ3GeometryObject         box,
  147.                                  TQ3Vector3D *            orientation);
  148.  
  149. EXTERN_API_C( TQ3Status )
  150. Q3Box_GetMajorAxis                (TQ3GeometryObject         box,
  151.                                  TQ3Vector3D *            majorAxis);
  152.  
  153. EXTERN_API_C( TQ3Status )
  154. Q3Box_GetMinorAxis                (TQ3GeometryObject         box,
  155.                                  TQ3Vector3D *            minorAxis);
  156.  
  157. EXTERN_API_C( TQ3Status )
  158. Q3Box_GetFaceAttributeSet        (TQ3GeometryObject         box,
  159.                                  unsigned long             faceIndex,
  160.                                  TQ3AttributeSet *        faceAttributeSet);
  161.  
  162. EXTERN_API_C( TQ3Status )
  163. Q3Box_SetFaceAttributeSet        (TQ3GeometryObject         box,
  164.                                  unsigned long             faceIndex,
  165.                                  TQ3AttributeSet         faceAttributeSet);
  166.  
  167.  
  168.  
  169. /******************************************************************************
  170.  **                                                                             **
  171.  **                        Cone Data Structure Definitions                          **
  172.  **                                                                             **
  173.  *****************************************************************************/
  174.  
  175. struct TQ3ConeData {
  176.     TQ3Point3D                         origin;
  177.     TQ3Vector3D                     orientation;
  178.     TQ3Vector3D                     majorRadius;
  179.     TQ3Vector3D                     minorRadius;
  180.     float                             uMin;
  181.     float                             uMax;
  182.     float                             vMin;
  183.     float                             vMax;
  184.     TQ3EndCap                         caps;
  185.     TQ3AttributeSet                 interiorAttributeSet;
  186.     TQ3AttributeSet                 faceAttributeSet;
  187.     TQ3AttributeSet                 bottomAttributeSet;
  188.     TQ3AttributeSet                 coneAttributeSet;
  189. };
  190. typedef struct TQ3ConeData                TQ3ConeData;
  191. /******************************************************************************
  192.  **                                                                             **
  193.  **                                Cone Routines                                 **
  194.  **                                                                             **
  195.  *****************************************************************************/
  196. EXTERN_API_C( TQ3GeometryObject )
  197. Q3Cone_New                        (const TQ3ConeData *    coneData);
  198.  
  199. EXTERN_API_C( TQ3Status )
  200. Q3Cone_Submit                    (const TQ3ConeData *    coneData,
  201.                                  TQ3ViewObject             view);
  202.  
  203. EXTERN_API_C( TQ3Status )
  204. Q3Cone_SetData                    (TQ3GeometryObject         cone,
  205.                                  const TQ3ConeData *    coneData);
  206.  
  207. EXTERN_API_C( TQ3Status )
  208. Q3Cone_GetData                    (TQ3GeometryObject         cone,
  209.                                  TQ3ConeData *            coneData);
  210.  
  211. EXTERN_API_C( TQ3Status )
  212. Q3Cone_SetOrigin                (TQ3GeometryObject         cone,
  213.                                  const TQ3Point3D *        origin);
  214.  
  215. EXTERN_API_C( TQ3Status )
  216. Q3Cone_SetOrientation            (TQ3GeometryObject         cone,
  217.                                  const TQ3Vector3D *    orientation);
  218.  
  219. EXTERN_API_C( TQ3Status )
  220. Q3Cone_SetMajorRadius            (TQ3GeometryObject         cone,
  221.                                  const TQ3Vector3D *    majorRadius);
  222.  
  223. EXTERN_API_C( TQ3Status )
  224. Q3Cone_SetMinorRadius            (TQ3GeometryObject         cone,
  225.                                  const TQ3Vector3D *    minorRadius);
  226.  
  227. EXTERN_API_C( TQ3Status )
  228. Q3Cone_GetOrigin                (TQ3GeometryObject         cone,
  229.                                  TQ3Point3D *            origin);
  230.  
  231. EXTERN_API_C( TQ3Status )
  232. Q3Cone_GetOrientation            (TQ3GeometryObject         cone,
  233.                                  TQ3Vector3D *            orientation);
  234.  
  235. EXTERN_API_C( TQ3Status )
  236. Q3Cone_GetMajorRadius            (TQ3GeometryObject         cone,
  237.                                  TQ3Vector3D *            majorRadius);
  238.  
  239. EXTERN_API_C( TQ3Status )
  240. Q3Cone_GetMinorRadius            (TQ3GeometryObject         cone,
  241.                                  TQ3Vector3D *            minorRadius);
  242.  
  243. EXTERN_API_C( TQ3Status )
  244. Q3Cone_SetCaps                    (TQ3GeometryObject         cone,
  245.                                  TQ3EndCap                 caps);
  246.  
  247. EXTERN_API_C( TQ3Status )
  248. Q3Cone_GetCaps                    (TQ3GeometryObject         cone,
  249.                                  TQ3EndCap *            caps);
  250.  
  251. EXTERN_API_C( TQ3Status )
  252. Q3Cone_SetBottomAttributeSet    (TQ3GeometryObject         cone,
  253.                                  TQ3AttributeSet         bottomAttributeSet);
  254.  
  255. EXTERN_API_C( TQ3Status )
  256. Q3Cone_GetBottomAttributeSet    (TQ3GeometryObject         cone,
  257.                                  TQ3AttributeSet *        bottomAttributeSet);
  258.  
  259. EXTERN_API_C( TQ3Status )
  260. Q3Cone_SetFaceAttributeSet        (TQ3GeometryObject         cone,
  261.                                  TQ3AttributeSet         faceAttributeSet);
  262.  
  263. EXTERN_API_C( TQ3Status )
  264. Q3Cone_GetFaceAttributeSet        (TQ3GeometryObject         cone,
  265.                                  TQ3AttributeSet *        faceAttributeSet);
  266.  
  267. EXTERN_API_C( TQ3Status )
  268. Q3Cone_EmptyData                (TQ3ConeData *            coneData);
  269.  
  270.  
  271.  
  272.  
  273. /******************************************************************************
  274.  **                                                                             **
  275.  **                        Cylinder Data Structure Definitions                     **
  276.  **                                                                             **
  277.  *****************************************************************************/
  278.  
  279. struct TQ3CylinderData {
  280.     TQ3Point3D                         origin;
  281.     TQ3Vector3D                     orientation;
  282.     TQ3Vector3D                     majorRadius;
  283.     TQ3Vector3D                     minorRadius;
  284.     float                             uMin;
  285.     float                             uMax;
  286.     float                             vMin;
  287.     float                             vMax;
  288.     TQ3EndCap                         caps;
  289.     TQ3AttributeSet                 interiorAttributeSet;
  290.     TQ3AttributeSet                 topAttributeSet;
  291.     TQ3AttributeSet                 faceAttributeSet;
  292.     TQ3AttributeSet                 bottomAttributeSet;
  293.     TQ3AttributeSet                 cylinderAttributeSet;
  294. };
  295. typedef struct TQ3CylinderData            TQ3CylinderData;
  296. /******************************************************************************
  297.  **                                                                             **
  298.  **                            Cylinder Routines                                 **
  299.  **                                                                             **
  300.  *****************************************************************************/
  301. EXTERN_API_C( TQ3GeometryObject )
  302. Q3Cylinder_New                    (const TQ3CylinderData * cylinderData);
  303.  
  304. EXTERN_API_C( TQ3Status )
  305. Q3Cylinder_Submit                (const TQ3CylinderData * cylinderData,
  306.                                  TQ3ViewObject             view);
  307.  
  308. EXTERN_API_C( TQ3Status )
  309. Q3Cylinder_SetData                (TQ3GeometryObject         cylinder,
  310.                                  const TQ3CylinderData * cylinderData);
  311.  
  312. EXTERN_API_C( TQ3Status )
  313. Q3Cylinder_GetData                (TQ3GeometryObject         cylinder,
  314.                                  TQ3CylinderData *        cylinderData);
  315.  
  316. EXTERN_API_C( TQ3Status )
  317. Q3Cylinder_SetOrigin            (TQ3GeometryObject         cylinder,
  318.                                  const TQ3Point3D *        origin);
  319.  
  320. EXTERN_API_C( TQ3Status )
  321. Q3Cylinder_SetOrientation        (TQ3GeometryObject         cylinder,
  322.                                  const TQ3Vector3D *    orientation);
  323.  
  324. EXTERN_API_C( TQ3Status )
  325. Q3Cylinder_SetMajorRadius        (TQ3GeometryObject         cylinder,
  326.                                  const TQ3Vector3D *    majorRadius);
  327.  
  328. EXTERN_API_C( TQ3Status )
  329. Q3Cylinder_SetMinorRadius        (TQ3GeometryObject         cylinder,
  330.                                  const TQ3Vector3D *    minorRadius);
  331.  
  332. EXTERN_API_C( TQ3Status )
  333. Q3Cylinder_GetOrigin            (TQ3GeometryObject         cylinder,
  334.                                  TQ3Point3D *            origin);
  335.  
  336. EXTERN_API_C( TQ3Status )
  337. Q3Cylinder_GetOrientation        (TQ3GeometryObject         cylinder,
  338.                                  TQ3Vector3D *            orientation);
  339.  
  340. EXTERN_API_C( TQ3Status )
  341. Q3Cylinder_GetMajorRadius        (TQ3GeometryObject         cylinder,
  342.                                  TQ3Vector3D *            majorRadius);
  343.  
  344. EXTERN_API_C( TQ3Status )
  345. Q3Cylinder_GetMinorRadius        (TQ3GeometryObject         cylinder,
  346.                                  TQ3Vector3D *            minorRadius);
  347.  
  348.  
  349. EXTERN_API_C( TQ3Status )
  350. Q3Cylinder_SetCaps                (TQ3GeometryObject         cylinder,
  351.                                  TQ3EndCap                 caps);
  352.  
  353. EXTERN_API_C( TQ3Status )
  354. Q3Cylinder_GetCaps                (TQ3GeometryObject         cylinder,
  355.                                  TQ3EndCap *            caps);
  356.  
  357.  
  358. EXTERN_API_C( TQ3Status )
  359. Q3Cylinder_SetTopAttributeSet    (TQ3GeometryObject         cylinder,
  360.                                  TQ3AttributeSet         topAttributeSet);
  361.  
  362. EXTERN_API_C( TQ3Status )
  363. Q3Cylinder_GetTopAttributeSet    (TQ3GeometryObject         cylinder,
  364.                                  TQ3AttributeSet *        topAttributeSet);
  365.  
  366. EXTERN_API_C( TQ3Status )
  367. Q3Cylinder_SetBottomAttributeSet (TQ3GeometryObject     cylinder,
  368.                                  TQ3AttributeSet         bottomAttributeSet);
  369.  
  370. EXTERN_API_C( TQ3Status )
  371. Q3Cylinder_GetBottomAttributeSet (TQ3GeometryObject     cylinder,
  372.                                  TQ3AttributeSet *        bottomAttributeSet);
  373.  
  374. EXTERN_API_C( TQ3Status )
  375. Q3Cylinder_SetFaceAttributeSet    (TQ3GeometryObject         cylinder,
  376.                                  TQ3AttributeSet         faceAttributeSet);
  377.  
  378. EXTERN_API_C( TQ3Status )
  379. Q3Cylinder_GetFaceAttributeSet    (TQ3GeometryObject         cylinder,
  380.                                  TQ3AttributeSet *        faceAttributeSet);
  381.  
  382. EXTERN_API_C( TQ3Status )
  383. Q3Cylinder_EmptyData            (TQ3CylinderData *        cylinderData);
  384.  
  385.  
  386.  
  387.  
  388. /******************************************************************************
  389.  **                                                                             **
  390.  **                        Disk Data Structure Definitions                         **
  391.  **                                                                             **
  392.  *****************************************************************************/
  393.  
  394. struct TQ3DiskData {
  395.     TQ3Point3D                         origin;
  396.     TQ3Vector3D                     majorRadius;
  397.     TQ3Vector3D                     minorRadius;
  398.     float                             uMin;
  399.     float                             uMax;
  400.     float                             vMin;
  401.     float                             vMax;
  402.     TQ3AttributeSet                 diskAttributeSet;
  403. };
  404. typedef struct TQ3DiskData                TQ3DiskData;
  405. /******************************************************************************
  406.  **                                                                             **
  407.  **                                Disk Routines                                  **
  408.  **                                                                             **
  409.  *****************************************************************************/
  410. EXTERN_API_C( TQ3GeometryObject )
  411. Q3Disk_New                        (const TQ3DiskData *    diskData);
  412.  
  413. EXTERN_API_C( TQ3Status )
  414. Q3Disk_Submit                    (const TQ3DiskData *    diskData,
  415.                                  TQ3ViewObject             view);
  416.  
  417. EXTERN_API_C( TQ3Status )
  418. Q3Disk_SetData                    (TQ3GeometryObject         disk,
  419.                                  const TQ3DiskData *    diskData);
  420.  
  421. EXTERN_API_C( TQ3Status )
  422. Q3Disk_GetData                    (TQ3GeometryObject         disk,
  423.                                  TQ3DiskData *            diskData);
  424.  
  425. EXTERN_API_C( TQ3Status )
  426. Q3Disk_SetOrigin                (TQ3GeometryObject         disk,
  427.                                  const TQ3Point3D *        origin);
  428.  
  429. EXTERN_API_C( TQ3Status )
  430. Q3Disk_SetMajorRadius            (TQ3GeometryObject         disk,
  431.                                  const TQ3Vector3D *    majorRadius);
  432.  
  433. EXTERN_API_C( TQ3Status )
  434. Q3Disk_SetMinorRadius            (TQ3GeometryObject         disk,
  435.                                  const TQ3Vector3D *    minorRadius);
  436.  
  437. EXTERN_API_C( TQ3Status )
  438. Q3Disk_GetOrigin                (TQ3GeometryObject         disk,
  439.                                  TQ3Point3D *            origin);
  440.  
  441. EXTERN_API_C( TQ3Status )
  442. Q3Disk_GetMajorRadius            (TQ3GeometryObject         disk,
  443.                                  TQ3Vector3D *            majorRadius);
  444.  
  445. EXTERN_API_C( TQ3Status )
  446. Q3Disk_GetMinorRadius            (TQ3GeometryObject         disk,
  447.                                  TQ3Vector3D *            minorRadius);
  448.  
  449.  
  450. EXTERN_API_C( TQ3Status )
  451. Q3Disk_EmptyData                (TQ3DiskData *            diskData);
  452.  
  453.  
  454.  
  455.  
  456. /******************************************************************************
  457.  **                                                                             **
  458.  **                     Ellipse Data Structure Definitions                         **
  459.  **                                                                             **
  460.  *****************************************************************************/
  461.  
  462. struct TQ3EllipseData {
  463.     TQ3Point3D                         origin;
  464.     TQ3Vector3D                     majorRadius;
  465.     TQ3Vector3D                     minorRadius;
  466.     float                             uMin;
  467.     float                             uMax;
  468.     TQ3AttributeSet                 ellipseAttributeSet;
  469. };
  470. typedef struct TQ3EllipseData            TQ3EllipseData;
  471. /******************************************************************************
  472.  **                                                                             **
  473.  **                                Ellipse Routines                             **
  474.  **                                                                             **
  475.  *****************************************************************************/
  476. EXTERN_API_C( TQ3GeometryObject )
  477. Q3Ellipse_New                    (const TQ3EllipseData *    ellipseData);
  478.  
  479. EXTERN_API_C( TQ3Status )
  480. Q3Ellipse_Submit                (const TQ3EllipseData *    ellipseData,
  481.                                  TQ3ViewObject             view);
  482.  
  483. EXTERN_API_C( TQ3Status )
  484. Q3Ellipse_SetData                (TQ3GeometryObject         ellipse,
  485.                                  const TQ3EllipseData *    ellipseData);
  486.  
  487. EXTERN_API_C( TQ3Status )
  488. Q3Ellipse_GetData                (TQ3GeometryObject         ellipse,
  489.                                  TQ3EllipseData *        ellipseData);
  490.  
  491. EXTERN_API_C( TQ3Status )
  492. Q3Ellipse_SetOrigin                (TQ3GeometryObject         ellipse,
  493.                                  const TQ3Point3D *        origin);
  494.  
  495. EXTERN_API_C( TQ3Status )
  496. Q3Ellipse_SetMajorRadius        (TQ3GeometryObject         ellipse,
  497.                                  const TQ3Vector3D *    majorRadius);
  498.  
  499. EXTERN_API_C( TQ3Status )
  500. Q3Ellipse_SetMinorRadius        (TQ3GeometryObject         ellipse,
  501.                                  const TQ3Vector3D *    minorRadius);
  502.  
  503. EXTERN_API_C( TQ3Status )
  504. Q3Ellipse_GetOrigin                (TQ3GeometryObject         ellipse,
  505.                                  TQ3Point3D *            origin);
  506.  
  507. EXTERN_API_C( TQ3Status )
  508. Q3Ellipse_GetMajorRadius        (TQ3GeometryObject         ellipse,
  509.                                  TQ3Vector3D *            majorRadius);
  510.  
  511. EXTERN_API_C( TQ3Status )
  512. Q3Ellipse_GetMinorRadius        (TQ3GeometryObject         ellipse,
  513.                                  TQ3Vector3D *            minorRadius);
  514.  
  515.  
  516. EXTERN_API_C( TQ3Status )
  517. Q3Ellipse_EmptyData                (TQ3EllipseData *        ellipseData);
  518.  
  519.  
  520.  
  521.  
  522. /******************************************************************************
  523.  **                                                                          **
  524.  **                            Ellipsoid Data structures                         **
  525.  **                                                                          **
  526.  *****************************************************************************/
  527.  
  528. struct TQ3EllipsoidData {
  529.     TQ3Point3D                         origin;
  530.     TQ3Vector3D                     orientation;
  531.     TQ3Vector3D                     majorRadius;
  532.     TQ3Vector3D                     minorRadius;
  533.     float                             uMin;
  534.     float                             uMax;
  535.     float                             vMin;
  536.     float                             vMax;
  537.     TQ3EndCap                         caps;
  538.     TQ3AttributeSet                 interiorAttributeSet;
  539.     TQ3AttributeSet                 ellipsoidAttributeSet;
  540. };
  541. typedef struct TQ3EllipsoidData            TQ3EllipsoidData;
  542. /******************************************************************************
  543.  **                                                                          **
  544.  **                            Ellipsoid Routines                                **
  545.  **                                                                          **
  546.  *****************************************************************************/
  547. EXTERN_API_C( TQ3GeometryObject )
  548. Q3Ellipsoid_New                    (const TQ3EllipsoidData * ellipsoidData);
  549.  
  550. EXTERN_API_C( TQ3Status )
  551. Q3Ellipsoid_Submit                (const TQ3EllipsoidData * ellipsoidData,
  552.                                  TQ3ViewObject             view);
  553.  
  554. EXTERN_API_C( TQ3Status )
  555. Q3Ellipsoid_SetData                (TQ3GeometryObject         ellipsoid,
  556.                                  const TQ3EllipsoidData * ellipsoidData);
  557.  
  558. EXTERN_API_C( TQ3Status )
  559. Q3Ellipsoid_GetData                (TQ3GeometryObject         ellipsoid,
  560.                                  TQ3EllipsoidData *        ellipsoidData);
  561.  
  562. EXTERN_API_C( TQ3Status )
  563. Q3Ellipsoid_SetOrigin            (TQ3GeometryObject         ellipsoid,
  564.                                  const TQ3Point3D *        origin);
  565.  
  566. EXTERN_API_C( TQ3Status )
  567. Q3Ellipsoid_SetOrientation        (TQ3GeometryObject         ellipsoid,
  568.                                  const TQ3Vector3D *    orientation);
  569.  
  570. EXTERN_API_C( TQ3Status )
  571. Q3Ellipsoid_SetMajorRadius        (TQ3GeometryObject         ellipsoid,
  572.                                  const TQ3Vector3D *    majorRadius);
  573.  
  574. EXTERN_API_C( TQ3Status )
  575. Q3Ellipsoid_SetMinorRadius        (TQ3GeometryObject         ellipsoid,
  576.                                  const TQ3Vector3D *    minorRadius);
  577.  
  578. EXTERN_API_C( TQ3Status )
  579. Q3Ellipsoid_GetOrigin            (TQ3GeometryObject         ellipsoid,
  580.                                  TQ3Point3D *            origin);
  581.  
  582. EXTERN_API_C( TQ3Status )
  583. Q3Ellipsoid_GetOrientation        (TQ3GeometryObject         ellipsoid,
  584.                                  TQ3Vector3D *            orientation);
  585.  
  586. EXTERN_API_C( TQ3Status )
  587. Q3Ellipsoid_GetMajorRadius        (TQ3GeometryObject         ellipsoid,
  588.                                  TQ3Vector3D *            majorRadius);
  589.  
  590. EXTERN_API_C( TQ3Status )
  591. Q3Ellipsoid_GetMinorRadius        (TQ3GeometryObject         ellipsoid,
  592.                                  TQ3Vector3D *            minorRadius);
  593.  
  594. EXTERN_API_C( TQ3Status )
  595. Q3Ellipsoid_EmptyData            (TQ3EllipsoidData *        ellipsoidData);
  596.  
  597.  
  598.  
  599.  
  600. /******************************************************************************
  601.  **                                                                             **
  602.  **                    General Polygon Data Structure Definitions                 **
  603.  **                                                                             **
  604.  *****************************************************************************/
  605.  
  606. enum TQ3GeneralPolygonShapeHint {
  607.     kQ3GeneralPolygonShapeHintComplex = 0,
  608.     kQ3GeneralPolygonShapeHintConcave = 1,
  609.     kQ3GeneralPolygonShapeHintConvex = 2
  610. };
  611. typedef enum TQ3GeneralPolygonShapeHint TQ3GeneralPolygonShapeHint;
  612.  
  613.  
  614. struct TQ3GeneralPolygonContourData {
  615.     unsigned long                     numVertices;
  616.     TQ3Vertex3D *                    vertices;
  617. };
  618. typedef struct TQ3GeneralPolygonContourData TQ3GeneralPolygonContourData;
  619.  
  620. struct TQ3GeneralPolygonData {
  621.     unsigned long                     numContours;
  622.     TQ3GeneralPolygonContourData *    contours;
  623.     TQ3GeneralPolygonShapeHint         shapeHint;
  624.     TQ3AttributeSet                 generalPolygonAttributeSet;
  625. };
  626. typedef struct TQ3GeneralPolygonData    TQ3GeneralPolygonData;
  627. /******************************************************************************
  628.  **                                                                             **
  629.  **                            General polygon Routines                         **
  630.  **                                                                             **
  631.  *****************************************************************************/
  632. EXTERN_API_C( TQ3GeometryObject )
  633. Q3GeneralPolygon_New            (const TQ3GeneralPolygonData * generalPolygonData);
  634.  
  635. EXTERN_API_C( TQ3Status )
  636. Q3GeneralPolygon_Submit            (const TQ3GeneralPolygonData * generalPolygonData,
  637.                                  TQ3ViewObject             view);
  638.  
  639. EXTERN_API_C( TQ3Status )
  640. Q3GeneralPolygon_SetData        (TQ3GeometryObject         generalPolygon,
  641.                                  const TQ3GeneralPolygonData * generalPolygonData);
  642.  
  643. EXTERN_API_C( TQ3Status )
  644. Q3GeneralPolygon_GetData        (TQ3GeometryObject         polygon,
  645.                                  TQ3GeneralPolygonData * generalPolygonData);
  646.  
  647. EXTERN_API_C( TQ3Status )
  648. Q3GeneralPolygon_EmptyData        (TQ3GeneralPolygonData * generalPolygonData);
  649.  
  650. EXTERN_API_C( TQ3Status )
  651. Q3GeneralPolygon_GetVertexPosition (TQ3GeometryObject     generalPolygon,
  652.                                  unsigned long             contourIndex,
  653.                                  unsigned long             pointIndex,
  654.                                  TQ3Point3D *            position);
  655.  
  656. EXTERN_API_C( TQ3Status )
  657. Q3GeneralPolygon_SetVertexPosition (TQ3GeometryObject     generalPolygon,
  658.                                  unsigned long             contourIndex,
  659.                                  unsigned long             pointIndex,
  660.                                  const TQ3Point3D *        position);
  661.  
  662. EXTERN_API_C( TQ3Status )
  663. Q3GeneralPolygon_GetVertexAttributeSet (TQ3GeometryObject  generalPolygon,
  664.                                  unsigned long             contourIndex,
  665.                                  unsigned long             pointIndex,
  666.                                  TQ3AttributeSet *        attributeSet);
  667.  
  668. EXTERN_API_C( TQ3Status )
  669. Q3GeneralPolygon_SetVertexAttributeSet (TQ3GeometryObject  generalPolygon,
  670.                                  unsigned long             contourIndex,
  671.                                  unsigned long             pointIndex,
  672.                                  TQ3AttributeSet         attributeSet);
  673.  
  674. EXTERN_API_C( TQ3Status )
  675. Q3GeneralPolygon_SetShapeHint    (TQ3GeometryObject         generalPolygon,
  676.                                  TQ3GeneralPolygonShapeHint  shapeHint);
  677.  
  678. EXTERN_API_C( TQ3Status )
  679. Q3GeneralPolygon_GetShapeHint    (TQ3GeometryObject         generalPolygon,
  680.                                  TQ3GeneralPolygonShapeHint * shapeHint);
  681.  
  682.  
  683.  
  684.  
  685. /******************************************************************************
  686.  **                                                                             **
  687.  **                        Line Data Structure Definitions                         **
  688.  **                                                                             **
  689.  *****************************************************************************/
  690.  
  691. struct TQ3LineData {
  692.     TQ3Vertex3D                     vertices[2];
  693.     TQ3AttributeSet                 lineAttributeSet;
  694. };
  695. typedef struct TQ3LineData                TQ3LineData;
  696. /******************************************************************************
  697.  **                                                                             **
  698.  **                            Line Routines                                     **
  699.  **                                                                             **
  700.  *****************************************************************************/
  701. EXTERN_API_C( TQ3GeometryObject )
  702. Q3Line_New                        (const TQ3LineData *    lineData);
  703.  
  704. EXTERN_API_C( TQ3Status )
  705. Q3Line_Submit                    (const TQ3LineData *    lineData,
  706.                                  TQ3ViewObject             view);
  707.  
  708. EXTERN_API_C( TQ3Status )
  709. Q3Line_GetData                    (TQ3GeometryObject         line,
  710.                                  TQ3LineData *            lineData);
  711.  
  712. EXTERN_API_C( TQ3Status )
  713. Q3Line_SetData                    (TQ3GeometryObject         line,
  714.                                  const TQ3LineData *    lineData);
  715.  
  716. EXTERN_API_C( TQ3Status )
  717. Q3Line_GetVertexPosition        (TQ3GeometryObject         line,
  718.                                  unsigned long             index,
  719.                                  TQ3Point3D *            position);
  720.  
  721. EXTERN_API_C( TQ3Status )
  722. Q3Line_SetVertexPosition        (TQ3GeometryObject         line,
  723.                                  unsigned long             index,
  724.                                  const TQ3Point3D *        position);
  725.  
  726. EXTERN_API_C( TQ3Status )
  727. Q3Line_GetVertexAttributeSet    (TQ3GeometryObject         line,
  728.                                  unsigned long             index,
  729.                                  TQ3AttributeSet *        attributeSet);
  730.  
  731. EXTERN_API_C( TQ3Status )
  732. Q3Line_SetVertexAttributeSet    (TQ3GeometryObject         line,
  733.                                  unsigned long             index,
  734.                                  TQ3AttributeSet         attributeSet);
  735.  
  736. EXTERN_API_C( TQ3Status )
  737. Q3Line_EmptyData                (TQ3LineData *            lineData);
  738.  
  739.  
  740.  
  741.  
  742. /******************************************************************************
  743.  **                                                                             **
  744.  **                        Marker Data Structure Definitions                     **
  745.  **                                                                             **
  746.  *****************************************************************************/
  747.  
  748. struct TQ3MarkerData {
  749.     TQ3Point3D                         location;
  750.     long                             xOffset;
  751.     long                             yOffset;
  752.     TQ3Bitmap                         bitmap;
  753.     TQ3AttributeSet                 markerAttributeSet;
  754. };
  755. typedef struct TQ3MarkerData            TQ3MarkerData;
  756. /******************************************************************************
  757.  **                                                                             **
  758.  **                                Marker Routines                                 **
  759.  **                                                                             **
  760.  *****************************************************************************/
  761. EXTERN_API_C( TQ3GeometryObject )
  762. Q3Marker_New                    (const TQ3MarkerData *    markerData);
  763.  
  764. EXTERN_API_C( TQ3Status )
  765. Q3Marker_Submit                    (const TQ3MarkerData *    markerData,
  766.                                  TQ3ViewObject             view);
  767.  
  768. EXTERN_API_C( TQ3Status )
  769. Q3Marker_SetData                (TQ3GeometryObject         geometry,
  770.                                  const TQ3MarkerData *    markerData);
  771.  
  772. EXTERN_API_C( TQ3Status )
  773. Q3Marker_GetData                (TQ3GeometryObject         geometry,
  774.                                  TQ3MarkerData *        markerData);
  775.  
  776. EXTERN_API_C( TQ3Status )
  777. Q3Marker_EmptyData                (TQ3MarkerData *        markerData);
  778.  
  779. EXTERN_API_C( TQ3Status )
  780. Q3Marker_GetPosition            (TQ3GeometryObject         marker,
  781.                                  TQ3Point3D *            location);
  782.  
  783. EXTERN_API_C( TQ3Status )
  784. Q3Marker_SetPosition            (TQ3GeometryObject         marker,
  785.                                  const TQ3Point3D *        location);
  786.  
  787. EXTERN_API_C( TQ3Status )
  788. Q3Marker_GetXOffset                (TQ3GeometryObject         marker,
  789.                                  long *                    xOffset);
  790.  
  791. EXTERN_API_C( TQ3Status )
  792. Q3Marker_SetXOffset                (TQ3GeometryObject         marker,
  793.                                  long                     xOffset);
  794.  
  795. EXTERN_API_C( TQ3Status )
  796. Q3Marker_GetYOffset                (TQ3GeometryObject         marker,
  797.                                  long *                    yOffset);
  798.  
  799. EXTERN_API_C( TQ3Status )
  800. Q3Marker_SetYOffset                (TQ3GeometryObject         marker,
  801.                                  long                     yOffset);
  802.  
  803. EXTERN_API_C( TQ3Status )
  804. Q3Marker_GetBitmap                (TQ3GeometryObject         marker,
  805.                                  TQ3Bitmap *            bitmap);
  806.  
  807. EXTERN_API_C( TQ3Status )
  808. Q3Marker_SetBitmap                (TQ3GeometryObject         marker,
  809.                                  const TQ3Bitmap *        bitmap);
  810.  
  811.  
  812.  
  813.  
  814. /******************************************************************************
  815.  **                                                                             **
  816.  **                        Mesh Data Structure Definitions                         **
  817.  **                                                                             **
  818.  *****************************************************************************/
  819. typedef struct OpaqueTQ3MeshComponent*     TQ3MeshComponent;
  820. typedef struct OpaqueTQ3MeshVertex*     TQ3MeshVertex;
  821. typedef struct OpaqueTQ3MeshFace*         TQ3MeshFace;
  822. typedef struct OpaqueTQ3MeshEdge*         TQ3MeshEdge;
  823. typedef struct OpaqueTQ3MeshContour*     TQ3MeshContour;
  824. /******************************************************************************
  825.  **                                                                             **
  826.  **                            Mesh Routines                                      **
  827.  **                                                                             **
  828.  *****************************************************************************/
  829. /*
  830.  *  Constructors
  831.  */
  832. EXTERN_API_C( TQ3GeometryObject )
  833. Q3Mesh_New                        (void);
  834.  
  835. EXTERN_API_C( TQ3MeshVertex )
  836. Q3Mesh_VertexNew                (TQ3GeometryObject         mesh,
  837.                                  const TQ3Vertex3D *    vertex);
  838.  
  839. EXTERN_API_C( TQ3MeshFace )
  840. Q3Mesh_FaceNew                    (TQ3GeometryObject         mesh,
  841.                                  unsigned long             numVertices,
  842.                                  const TQ3MeshVertex *    vertices,
  843.                                  TQ3AttributeSet         attributeSet);
  844.  
  845. /*
  846.  *  Destructors
  847.  */
  848. EXTERN_API_C( TQ3Status )
  849. Q3Mesh_VertexDelete                (TQ3GeometryObject         mesh,
  850.                                  TQ3MeshVertex             vertex);
  851.  
  852. EXTERN_API_C( TQ3Status )
  853. Q3Mesh_FaceDelete                (TQ3GeometryObject         mesh,
  854.                                  TQ3MeshFace             face);
  855.  
  856. /*
  857.  * Methods
  858.  */
  859. EXTERN_API_C( TQ3Status )
  860. Q3Mesh_DelayUpdates                (TQ3GeometryObject         mesh);
  861.  
  862. EXTERN_API_C( TQ3Status )
  863. Q3Mesh_ResumeUpdates            (TQ3GeometryObject         mesh);
  864.  
  865. EXTERN_API_C( TQ3MeshContour )
  866. Q3Mesh_FaceToContour            (TQ3GeometryObject         mesh,
  867.                                  TQ3MeshFace             containerFace,
  868.                                  TQ3MeshFace             face);
  869.  
  870. EXTERN_API_C( TQ3MeshFace )
  871. Q3Mesh_ContourToFace            (TQ3GeometryObject         mesh,
  872.                                  TQ3MeshContour         contour);
  873.  
  874. /*
  875.  * Mesh
  876.  */
  877. EXTERN_API_C( TQ3Status )
  878. Q3Mesh_GetNumComponents            (TQ3GeometryObject         mesh,
  879.                                  unsigned long *        numComponents);
  880.  
  881. EXTERN_API_C( TQ3Status )
  882. Q3Mesh_GetNumEdges                (TQ3GeometryObject         mesh,
  883.                                  unsigned long *        numEdges);
  884.  
  885. EXTERN_API_C( TQ3Status )
  886. Q3Mesh_GetNumVertices            (TQ3GeometryObject         mesh,
  887.                                  unsigned long *        numVertices);
  888.  
  889. EXTERN_API_C( TQ3Status )
  890. Q3Mesh_GetNumFaces                (TQ3GeometryObject         mesh,
  891.                                  unsigned long *        numFaces);
  892.  
  893. EXTERN_API_C( TQ3Status )
  894. Q3Mesh_GetNumCorners            (TQ3GeometryObject         mesh,
  895.                                  unsigned long *        numCorners);
  896.  
  897. EXTERN_API_C( TQ3Status )
  898. Q3Mesh_GetOrientable            (TQ3GeometryObject         mesh,
  899.                                  TQ3Boolean *            orientable);
  900.  
  901. /*
  902.  * Component
  903.  */
  904. EXTERN_API_C( TQ3Status )
  905. Q3Mesh_GetComponentNumVertices    (TQ3GeometryObject         mesh,
  906.                                  TQ3MeshComponent         component,
  907.                                  unsigned long *        numVertices);
  908.  
  909. EXTERN_API_C( TQ3Status )
  910. Q3Mesh_GetComponentNumEdges        (TQ3GeometryObject         mesh,
  911.                                  TQ3MeshComponent         component,
  912.                                  unsigned long *        numEdges);
  913.  
  914. EXTERN_API_C( TQ3Status )
  915. Q3Mesh_GetComponentBoundingBox    (TQ3GeometryObject         mesh,
  916.                                  TQ3MeshComponent         component,
  917.                                  TQ3BoundingBox *        boundingBox);
  918.  
  919. EXTERN_API_C( TQ3Status )
  920. Q3Mesh_GetComponentOrientable    (TQ3GeometryObject         mesh,
  921.                                  TQ3MeshComponent         component,
  922.                                  TQ3Boolean *            orientable);
  923.  
  924. /*
  925.  * Vertex
  926.  */
  927. EXTERN_API_C( TQ3Status )
  928. Q3Mesh_GetVertexCoordinates        (TQ3GeometryObject         mesh,
  929.                                  TQ3MeshVertex             vertex,
  930.                                  TQ3Point3D *            coordinates);
  931.  
  932. EXTERN_API_C( TQ3Status )
  933. Q3Mesh_GetVertexIndex            (TQ3GeometryObject         mesh,
  934.                                  TQ3MeshVertex             vertex,
  935.                                  unsigned long *        index);
  936.  
  937. EXTERN_API_C( TQ3Status )
  938. Q3Mesh_GetVertexOnBoundary        (TQ3GeometryObject         mesh,
  939.                                  TQ3MeshVertex             vertex,
  940.                                  TQ3Boolean *            onBoundary);
  941.  
  942. EXTERN_API_C( TQ3Status )
  943. Q3Mesh_GetVertexComponent        (TQ3GeometryObject         mesh,
  944.                                  TQ3MeshVertex             vertex,
  945.                                  TQ3MeshComponent *        component);
  946.  
  947. EXTERN_API_C( TQ3Status )
  948. Q3Mesh_GetVertexAttributeSet    (TQ3GeometryObject         mesh,
  949.                                  TQ3MeshVertex             vertex,
  950.                                  TQ3AttributeSet *        attributeSet);
  951.  
  952.  
  953. EXTERN_API_C( TQ3Status )
  954. Q3Mesh_SetVertexCoordinates        (TQ3GeometryObject         mesh,
  955.                                  TQ3MeshVertex             vertex,
  956.                                  const TQ3Point3D *        coordinates);
  957.  
  958. EXTERN_API_C( TQ3Status )
  959. Q3Mesh_SetVertexAttributeSet    (TQ3GeometryObject         mesh,
  960.                                  TQ3MeshVertex             vertex,
  961.                                  TQ3AttributeSet         attributeSet);
  962.  
  963.  
  964. /*
  965.  * Face
  966.  */
  967. EXTERN_API_C( TQ3Status )
  968. Q3Mesh_GetFaceNumVertices        (TQ3GeometryObject         mesh,
  969.                                  TQ3MeshFace             face,
  970.                                  unsigned long *        numVertices);
  971.  
  972. EXTERN_API_C( TQ3Status )
  973. Q3Mesh_GetFacePlaneEquation        (TQ3GeometryObject         mesh,
  974.                                  TQ3MeshFace             face,
  975.                                  TQ3PlaneEquation *        planeEquation);
  976.  
  977. EXTERN_API_C( TQ3Status )
  978. Q3Mesh_GetFaceNumContours        (TQ3GeometryObject         mesh,
  979.                                  TQ3MeshFace             face,
  980.                                  unsigned long *        numContours);
  981.  
  982. EXTERN_API_C( TQ3Status )
  983. Q3Mesh_GetFaceIndex                (TQ3GeometryObject         mesh,
  984.                                  TQ3MeshFace             face,
  985.                                  unsigned long *        index);
  986.  
  987. EXTERN_API_C( TQ3Status )
  988. Q3Mesh_GetFaceComponent            (TQ3GeometryObject         mesh,
  989.                                  TQ3MeshFace             face,
  990.                                  TQ3MeshComponent *        component);
  991.  
  992. EXTERN_API_C( TQ3Status )
  993. Q3Mesh_GetFaceAttributeSet        (TQ3GeometryObject         mesh,
  994.                                  TQ3MeshFace             face,
  995.                                  TQ3AttributeSet *        attributeSet);
  996.  
  997.  
  998. EXTERN_API_C( TQ3Status )
  999. Q3Mesh_SetFaceAttributeSet        (TQ3GeometryObject         mesh,
  1000.                                  TQ3MeshFace             face,
  1001.                                  TQ3AttributeSet         attributeSet);
  1002.  
  1003. /*
  1004.  * Edge
  1005.  */
  1006. EXTERN_API_C( TQ3Status )
  1007. Q3Mesh_GetEdgeVertices            (TQ3GeometryObject         mesh,
  1008.                                  TQ3MeshEdge             edge,
  1009.                                  TQ3MeshVertex *        vertex1,
  1010.                                  TQ3MeshVertex *        vertex2);
  1011.  
  1012. EXTERN_API_C( TQ3Status )
  1013. Q3Mesh_GetEdgeFaces                (TQ3GeometryObject         mesh,
  1014.                                  TQ3MeshEdge             edge,
  1015.                                  TQ3MeshFace *            face1,
  1016.                                  TQ3MeshFace *            face2);
  1017.  
  1018. EXTERN_API_C( TQ3Status )
  1019. Q3Mesh_GetEdgeOnBoundary        (TQ3GeometryObject         mesh,
  1020.                                  TQ3MeshEdge             edge,
  1021.                                  TQ3Boolean *            onBoundary);
  1022.  
  1023. EXTERN_API_C( TQ3Status )
  1024. Q3Mesh_GetEdgeComponent            (TQ3GeometryObject         mesh,
  1025.                                  TQ3MeshEdge             edge,
  1026.                                  TQ3MeshComponent *        component);
  1027.  
  1028. EXTERN_API_C( TQ3Status )
  1029. Q3Mesh_GetEdgeAttributeSet        (TQ3GeometryObject         mesh,
  1030.                                  TQ3MeshEdge             edge,
  1031.                                  TQ3AttributeSet *        attributeSet);
  1032.  
  1033.  
  1034. EXTERN_API_C( TQ3Status )
  1035. Q3Mesh_SetEdgeAttributeSet        (TQ3GeometryObject         mesh,
  1036.                                  TQ3MeshEdge             edge,
  1037.                                  TQ3AttributeSet         attributeSet);
  1038.  
  1039. /*
  1040.  * Contour
  1041.  */
  1042. EXTERN_API_C( TQ3Status )
  1043. Q3Mesh_GetContourFace            (TQ3GeometryObject         mesh,
  1044.                                  TQ3MeshContour         contour,
  1045.                                  TQ3MeshFace *            face);
  1046.  
  1047. EXTERN_API_C( TQ3Status )
  1048. Q3Mesh_GetContourNumVertices    (TQ3GeometryObject         mesh,
  1049.                                  TQ3MeshContour         contour,
  1050.                                  unsigned long *        numVertices);
  1051.  
  1052. /*
  1053.  * Corner
  1054.  */
  1055. EXTERN_API_C( TQ3Status )
  1056. Q3Mesh_GetCornerAttributeSet    (TQ3GeometryObject         mesh,
  1057.                                  TQ3MeshVertex             vertex,
  1058.                                  TQ3MeshFace             face,
  1059.                                  TQ3AttributeSet *        attributeSet);
  1060.  
  1061. EXTERN_API_C( TQ3Status )
  1062. Q3Mesh_SetCornerAttributeSet    (TQ3GeometryObject         mesh,
  1063.                                  TQ3MeshVertex             vertex,
  1064.                                  TQ3MeshFace             face,
  1065.                                  TQ3AttributeSet         attributeSet);
  1066.  
  1067.  
  1068. /*
  1069.  * Public Mesh Iterators
  1070.  */
  1071.  
  1072. struct TQ3MeshIterator {
  1073.     void *                            var1;
  1074.     void *                            var2;
  1075.     void *                            var3;
  1076.     struct {
  1077.         void *                            field1;
  1078.         char                             field2[4];
  1079.     }                                 var4;
  1080. };
  1081. typedef struct TQ3MeshIterator            TQ3MeshIterator;
  1082. EXTERN_API_C( TQ3MeshComponent )
  1083. Q3Mesh_FirstMeshComponent        (TQ3GeometryObject         mesh,
  1084.                                  TQ3MeshIterator *        iterator);
  1085.  
  1086. EXTERN_API_C( TQ3MeshComponent )
  1087. Q3Mesh_NextMeshComponent        (TQ3MeshIterator *        iterator);
  1088.  
  1089. EXTERN_API_C( TQ3MeshVertex )
  1090. Q3Mesh_FirstComponentVertex        (TQ3MeshComponent         component,
  1091.                                  TQ3MeshIterator *        iterator);
  1092.  
  1093. EXTERN_API_C( TQ3MeshVertex )
  1094. Q3Mesh_NextComponentVertex        (TQ3MeshIterator *        iterator);
  1095.  
  1096. EXTERN_API_C( TQ3MeshEdge )
  1097. Q3Mesh_FirstComponentEdge        (TQ3MeshComponent         component,
  1098.                                  TQ3MeshIterator *        iterator);
  1099.  
  1100. EXTERN_API_C( TQ3MeshEdge )
  1101. Q3Mesh_NextComponentEdge        (TQ3MeshIterator *        iterator);
  1102.  
  1103. EXTERN_API_C( TQ3MeshVertex )
  1104. Q3Mesh_FirstMeshVertex            (TQ3GeometryObject         mesh,
  1105.                                  TQ3MeshIterator *        iterator);
  1106.  
  1107. EXTERN_API_C( TQ3MeshVertex )
  1108. Q3Mesh_NextMeshVertex            (TQ3MeshIterator *        iterator);
  1109.  
  1110. EXTERN_API_C( TQ3MeshFace )
  1111. Q3Mesh_FirstMeshFace            (TQ3GeometryObject         mesh,
  1112.                                  TQ3MeshIterator *        iterator);
  1113.  
  1114. EXTERN_API_C( TQ3MeshFace )
  1115. Q3Mesh_NextMeshFace                (TQ3MeshIterator *        iterator);
  1116.  
  1117. EXTERN_API_C( TQ3MeshEdge )
  1118. Q3Mesh_FirstMeshEdge            (TQ3GeometryObject         mesh,
  1119.                                  TQ3MeshIterator *        iterator);
  1120.  
  1121. EXTERN_API_C( TQ3MeshEdge )
  1122. Q3Mesh_NextMeshEdge                (TQ3MeshIterator *        iterator);
  1123.  
  1124. EXTERN_API_C( TQ3MeshEdge )
  1125. Q3Mesh_FirstVertexEdge            (TQ3MeshVertex             vertex,
  1126.                                  TQ3MeshIterator *        iterator);
  1127.  
  1128. EXTERN_API_C( TQ3MeshEdge )
  1129. Q3Mesh_NextVertexEdge            (TQ3MeshIterator *        iterator);
  1130.  
  1131. EXTERN_API_C( TQ3MeshVertex )
  1132. Q3Mesh_FirstVertexVertex        (TQ3MeshVertex             vertex,
  1133.                                  TQ3MeshIterator *        iterator);
  1134.  
  1135. EXTERN_API_C( TQ3MeshVertex )
  1136. Q3Mesh_NextVertexVertex            (TQ3MeshIterator *        iterator);
  1137.  
  1138. EXTERN_API_C( TQ3MeshFace )
  1139. Q3Mesh_FirstVertexFace            (TQ3MeshVertex             vertex,
  1140.                                  TQ3MeshIterator *        iterator);
  1141.  
  1142. EXTERN_API_C( TQ3MeshFace )
  1143. Q3Mesh_NextVertexFace            (TQ3MeshIterator *        iterator);
  1144.  
  1145. EXTERN_API_C( TQ3MeshEdge )
  1146. Q3Mesh_FirstFaceEdge            (TQ3MeshFace             face,
  1147.                                  TQ3MeshIterator *        iterator);
  1148.  
  1149. EXTERN_API_C( TQ3MeshEdge )
  1150. Q3Mesh_NextFaceEdge                (TQ3MeshIterator *        iterator);
  1151.  
  1152. EXTERN_API_C( TQ3MeshVertex )
  1153. Q3Mesh_FirstFaceVertex            (TQ3MeshFace             face,
  1154.                                  TQ3MeshIterator *        iterator);
  1155.  
  1156. EXTERN_API_C( TQ3MeshVertex )
  1157. Q3Mesh_NextFaceVertex            (TQ3MeshIterator *        iterator);
  1158.  
  1159. EXTERN_API_C( TQ3MeshFace )
  1160. Q3Mesh_FirstFaceFace            (TQ3MeshFace             face,
  1161.                                  TQ3MeshIterator *        iterator);
  1162.  
  1163. EXTERN_API_C( TQ3MeshFace )
  1164. Q3Mesh_NextFaceFace                (TQ3MeshIterator *        iterator);
  1165.  
  1166. EXTERN_API_C( TQ3MeshContour )
  1167. Q3Mesh_FirstFaceContour            (TQ3MeshFace             face,
  1168.                                  TQ3MeshIterator *        iterator);
  1169.  
  1170. EXTERN_API_C( TQ3MeshContour )
  1171. Q3Mesh_NextFaceContour            (TQ3MeshIterator *        iterator);
  1172.  
  1173. EXTERN_API_C( TQ3MeshEdge )
  1174. Q3Mesh_FirstContourEdge            (TQ3MeshContour         contour,
  1175.                                  TQ3MeshIterator *        iterator);
  1176.  
  1177. EXTERN_API_C( TQ3MeshEdge )
  1178. Q3Mesh_NextContourEdge            (TQ3MeshIterator *        iterator);
  1179.  
  1180. EXTERN_API_C( TQ3MeshVertex )
  1181. Q3Mesh_FirstContourVertex        (TQ3MeshContour         contour,
  1182.                                  TQ3MeshIterator *        iterator);
  1183.  
  1184. EXTERN_API_C( TQ3MeshVertex )
  1185. Q3Mesh_NextContourVertex        (TQ3MeshIterator *        iterator);
  1186.  
  1187. EXTERN_API_C( TQ3MeshFace )
  1188. Q3Mesh_FirstContourFace            (TQ3MeshContour         contour,
  1189.                                  TQ3MeshIterator *        iterator);
  1190.  
  1191. EXTERN_API_C( TQ3MeshFace )
  1192. Q3Mesh_NextContourFace            (TQ3MeshIterator *        iterator);
  1193.  
  1194.  
  1195. #define    Q3ForEachMeshComponent(m,c,i)                                        \
  1196.     for ( (c) = Q3Mesh_FirstMeshComponent((m),(i));                            \
  1197.           (c);                                                                \
  1198.           (c) = Q3Mesh_NextMeshComponent((i)) )
  1199.  
  1200. #define Q3ForEachComponentVertex(c,v,i)                                        \
  1201.     for ( (v) = Q3Mesh_FirstComponentVertex((c),(i));                        \
  1202.           (v);                                                                \
  1203.           (v) = Q3Mesh_NextComponentVertex((i)) )
  1204.           
  1205. #define Q3ForEachComponentEdge(c,e,i)                                        \
  1206.     for ( (e) = Q3Mesh_FirstComponentEdge((c),(i));                            \
  1207.           (e);                                                                \
  1208.           (e) = Q3Mesh_NextComponentEdge((i)) )
  1209.  
  1210. #define Q3ForEachMeshVertex(m,v,i)                                            \
  1211.     for ( (v) = Q3Mesh_FirstMeshVertex((m),(i));                            \
  1212.           (v);                                                                \
  1213.           (v) = Q3Mesh_NextMeshVertex((i)) )
  1214.  
  1215. #define Q3ForEachMeshFace(m,f,i)                                            \
  1216.     for ( (f) = Q3Mesh_FirstMeshFace((m),(i));                                \
  1217.           (f);                                                                \
  1218.           (f) = Q3Mesh_NextMeshFace((i)) )
  1219.  
  1220. #define Q3ForEachMeshEdge(m,e,i)                                            \
  1221.     for ( (e) = Q3Mesh_FirstMeshEdge((m),(i));                                \
  1222.           (e);                                                                \
  1223.           (e) = Q3Mesh_NextMeshEdge((i)) )
  1224.  
  1225. #define Q3ForEachVertexEdge(v,e,i)                                            \
  1226.     for ( (e) = Q3Mesh_FirstVertexEdge((v),(i));                            \
  1227.           (e);                                                                \
  1228.           (e) = Q3Mesh_NextVertexEdge((i)) )
  1229.  
  1230.  
  1231. #define Q3ForEachVertexVertex(v,n,i)                                        \
  1232.     for ( (n) = Q3Mesh_FirstVertexVertex((v),(i));                            \
  1233.           (n);                                                                \
  1234.           (n) = Q3Mesh_NextVertexVertex((i)) )
  1235.  
  1236. #define Q3ForEachVertexFace(v,f,i)                                            \
  1237.     for ( (f) = Q3Mesh_FirstVertexFace((v),(i));                            \
  1238.           (f);                                                                \
  1239.           (f) = Q3Mesh_NextVertexFace((i)) )
  1240.  
  1241. #define Q3ForEachFaceEdge(f,e,i)                                            \
  1242.     for ( (e) = Q3Mesh_FirstFaceEdge((f),(i));                                \
  1243.           (e);                                                                \
  1244.           (e) = Q3Mesh_NextFaceEdge((i)) )
  1245.  
  1246. #define Q3ForEachFaceVertex(f,v,i)                                            \
  1247.     for ( (v) = Q3Mesh_FirstFaceVertex((f),(i));                            \
  1248.           (v);                                                                \
  1249.           (v) = Q3Mesh_NextFaceVertex((i)) )
  1250.     
  1251. #define Q3ForEachFaceFace(f,n,i)                                            \
  1252.     for ( (n) = Q3Mesh_FirstFaceFace((f),(i));                              \
  1253.           (n);                                                                \
  1254.           (n) = Q3Mesh_NextFaceFace((i)) )
  1255.           
  1256. #define Q3ForEachFaceContour(f,h,i)                                            \
  1257.     for ( (h) = Q3Mesh_FirstFaceContour((f),(i));                            \
  1258.           (h);                                                                \
  1259.           (h) = Q3Mesh_NextFaceContour((i)) )
  1260.  
  1261. #define Q3ForEachContourEdge(h,e,i)                                            \
  1262.     for ( (e) = Q3Mesh_FirstContourEdge((h),(i));                            \
  1263.           (e);                                                                \
  1264.           (e) = Q3Mesh_NextContourEdge((i)) )
  1265.  
  1266. #define Q3ForEachContourVertex(h,v,i)                                        \
  1267.     for ( (v) = Q3Mesh_FirstContourVertex((h),(i));                            \
  1268.           (v);                                                                \
  1269.           (v) = Q3Mesh_NextContourVertex((i)) )
  1270.  
  1271. #define Q3ForEachContourFace(h,f,i)                                            \
  1272.     for ( (f) = Q3Mesh_FirstContourFace((h),(i));                            \
  1273.           (f);                                                                \
  1274.           (f) = Q3Mesh_NextContourFace((i)) )
  1275.  
  1276.  
  1277.  
  1278. /******************************************************************************
  1279.  **                                                                             **
  1280.  **                            Maximum order for NURB Curves                     **
  1281.  **                                                                             **
  1282.  *****************************************************************************/
  1283. #define kQ3NURBCurveMaxOrder    16
  1284.  
  1285. /******************************************************************************
  1286.  **                                                                             **
  1287.  **                        NURB Data Structure Definitions                         **
  1288.  **                                                                             **
  1289.  *****************************************************************************/
  1290.  
  1291. struct TQ3NURBCurveData {
  1292.     unsigned long                     order;
  1293.     unsigned long                     numPoints;
  1294.     TQ3RationalPoint4D *            controlPoints;
  1295.     float *                            knots;
  1296.     TQ3AttributeSet                 curveAttributeSet;
  1297. };
  1298. typedef struct TQ3NURBCurveData            TQ3NURBCurveData;
  1299. /******************************************************************************
  1300.  **                                                                             **
  1301.  **                                NURB Curve Routines                             **
  1302.  **                                                                             **
  1303.  *****************************************************************************/
  1304. EXTERN_API_C( TQ3GeometryObject )
  1305. Q3NURBCurve_New                    (const TQ3NURBCurveData * curveData);
  1306.  
  1307. EXTERN_API_C( TQ3Status )
  1308. Q3NURBCurve_Submit                (const TQ3NURBCurveData * curveData,
  1309.                                  TQ3ViewObject             view);
  1310.  
  1311. EXTERN_API_C( TQ3Status )
  1312. Q3NURBCurve_SetData                (TQ3GeometryObject         curve,
  1313.                                  const TQ3NURBCurveData * nurbCurveData);
  1314.  
  1315. EXTERN_API_C( TQ3Status )
  1316. Q3NURBCurve_GetData                (TQ3GeometryObject         curve,
  1317.                                  TQ3NURBCurveData *        nurbCurveData);
  1318.  
  1319. EXTERN_API_C( TQ3Status )
  1320. Q3NURBCurve_EmptyData            (TQ3NURBCurveData *        nurbCurveData);
  1321.  
  1322. EXTERN_API_C( TQ3Status )
  1323. Q3NURBCurve_SetControlPoint        (TQ3GeometryObject         curve,
  1324.                                  unsigned long             pointIndex,
  1325.                                  const TQ3RationalPoint4D * point4D);
  1326.  
  1327. EXTERN_API_C( TQ3Status )
  1328. Q3NURBCurve_GetControlPoint        (TQ3GeometryObject         curve,
  1329.                                  unsigned long             pointIndex,
  1330.                                  TQ3RationalPoint4D *    point4D);
  1331.  
  1332. EXTERN_API_C( TQ3Status )
  1333. Q3NURBCurve_SetKnot                (TQ3GeometryObject         curve,
  1334.                                  unsigned long             knotIndex,
  1335.                                  float                     knotValue);
  1336.  
  1337. EXTERN_API_C( TQ3Status )
  1338. Q3NURBCurve_GetKnot                (TQ3GeometryObject         curve,
  1339.                                  unsigned long             knotIndex,
  1340.                                  float *                knotValue);
  1341.  
  1342.  
  1343. /******************************************************************************
  1344.  **                                                                             **
  1345.  **                            Maximum NURB Patch Order                         **
  1346.  **                                                                             **
  1347.  *****************************************************************************/
  1348. #define kQ3NURBPatchMaxOrder    11
  1349. /******************************************************************************
  1350.  **                                                                             **
  1351.  **                        NURB Patch Data Structure Definitions                 **
  1352.  **                                                                             **
  1353.  *****************************************************************************/
  1354.  
  1355. struct TQ3NURBPatchTrimCurveData {
  1356.     unsigned long                     order;
  1357.     unsigned long                     numPoints;
  1358.     TQ3RationalPoint3D *            controlPoints;
  1359.     float *                            knots;
  1360. };
  1361. typedef struct TQ3NURBPatchTrimCurveData TQ3NURBPatchTrimCurveData;
  1362.  
  1363. struct TQ3NURBPatchTrimLoopData {
  1364.     unsigned long                     numTrimCurves;
  1365.     TQ3NURBPatchTrimCurveData *        trimCurves;
  1366. };
  1367. typedef struct TQ3NURBPatchTrimLoopData    TQ3NURBPatchTrimLoopData;
  1368.  
  1369. struct TQ3NURBPatchData {
  1370.     unsigned long                     uOrder;
  1371.     unsigned long                     vOrder;
  1372.     unsigned long                     numRows;
  1373.     unsigned long                     numColumns;
  1374.     TQ3RationalPoint4D *            controlPoints;
  1375.     float *                            uKnots;
  1376.     float *                            vKnots;
  1377.     unsigned long                     numTrimLoops;
  1378.     TQ3NURBPatchTrimLoopData *        trimLoops;
  1379.     TQ3AttributeSet                 patchAttributeSet;
  1380. };
  1381. typedef struct TQ3NURBPatchData            TQ3NURBPatchData;
  1382. /******************************************************************************
  1383.  **                                                                             **
  1384.  **                                NURB Patch Routines                             **
  1385.  **                                                                             **
  1386.  *****************************************************************************/
  1387. EXTERN_API_C( TQ3GeometryObject )
  1388. Q3NURBPatch_New                    (const TQ3NURBPatchData * nurbPatchData);
  1389.  
  1390. EXTERN_API_C( TQ3Status )
  1391. Q3NURBPatch_Submit                (const TQ3NURBPatchData * nurbPatchData,
  1392.                                  TQ3ViewObject             view);
  1393.  
  1394. EXTERN_API_C( TQ3Status )
  1395. Q3NURBPatch_SetData                (TQ3GeometryObject         nurbPatch,
  1396.                                  const TQ3NURBPatchData * nurbPatchData);
  1397.  
  1398. EXTERN_API_C( TQ3Status )
  1399. Q3NURBPatch_GetData                (TQ3GeometryObject         nurbPatch,
  1400.                                  TQ3NURBPatchData *        nurbPatchData);
  1401.  
  1402. EXTERN_API_C( TQ3Status )
  1403. Q3NURBPatch_SetControlPoint        (TQ3GeometryObject         nurbPatch,
  1404.                                  unsigned long             rowIndex,
  1405.                                  unsigned long             columnIndex,
  1406.                                  const TQ3RationalPoint4D * point4D);
  1407.  
  1408. EXTERN_API_C( TQ3Status )
  1409. Q3NURBPatch_GetControlPoint        (TQ3GeometryObject         nurbPatch,
  1410.                                  unsigned long             rowIndex,
  1411.                                  unsigned long             columnIndex,
  1412.                                  TQ3RationalPoint4D *    point4D);
  1413.  
  1414. EXTERN_API_C( TQ3Status )
  1415. Q3NURBPatch_SetUKnot            (TQ3GeometryObject         nurbPatch,
  1416.                                  unsigned long             knotIndex,
  1417.                                  float                     knotValue);
  1418.  
  1419. EXTERN_API_C( TQ3Status )
  1420. Q3NURBPatch_SetVKnot            (TQ3GeometryObject         nurbPatch,
  1421.                                  unsigned long             knotIndex,
  1422.                                  float                     knotValue);
  1423.  
  1424. EXTERN_API_C( TQ3Status )
  1425. Q3NURBPatch_GetUKnot            (TQ3GeometryObject         nurbPatch,
  1426.                                  unsigned long             knotIndex,
  1427.                                  float *                knotValue);
  1428.  
  1429. EXTERN_API_C( TQ3Status )
  1430. Q3NURBPatch_GetVKnot            (TQ3GeometryObject         nurbPatch,
  1431.                                  unsigned long             knotIndex,
  1432.                                  float *                knotValue);
  1433.  
  1434. EXTERN_API_C( TQ3Status )
  1435. Q3NURBPatch_EmptyData            (TQ3NURBPatchData *        nurbPatchData);
  1436.  
  1437.  
  1438.  
  1439.  
  1440. /******************************************************************************
  1441.  **                                                                             **
  1442.  **                        Pixmap Marker Data Structure Definitions             **
  1443.  **                                                                             **
  1444.  *****************************************************************************/
  1445.  
  1446. struct TQ3PixmapMarkerData {
  1447.     TQ3Point3D                         position;
  1448.     long                             xOffset;
  1449.     long                             yOffset;
  1450.     TQ3StoragePixmap                 pixmap;
  1451.     TQ3AttributeSet                 pixmapMarkerAttributeSet;
  1452. };
  1453. typedef struct TQ3PixmapMarkerData        TQ3PixmapMarkerData;
  1454. /******************************************************************************
  1455.  **                                                                             **
  1456.  **                                Pixmap Marker Routines                         **
  1457.  **                                                                             **
  1458.  *****************************************************************************/
  1459. EXTERN_API_C( TQ3GeometryObject )
  1460. Q3PixmapMarker_New                (const TQ3PixmapMarkerData * pixmapMarkerData);
  1461.  
  1462. EXTERN_API_C( TQ3Status )
  1463. Q3PixmapMarker_Submit            (const TQ3PixmapMarkerData * pixmapMarkerData,
  1464.                                  TQ3ViewObject             view);
  1465.  
  1466. EXTERN_API_C( TQ3Status )
  1467. Q3PixmapMarker_SetData            (TQ3GeometryObject         geometry,
  1468.                                  const TQ3PixmapMarkerData * pixmapMarkerData);
  1469.  
  1470. EXTERN_API_C( TQ3Status )
  1471. Q3PixmapMarker_GetData            (TQ3GeometryObject         geometry,
  1472.                                  TQ3PixmapMarkerData *    pixmapMarkerData);
  1473.  
  1474. EXTERN_API_C( TQ3Status )
  1475. Q3PixmapMarker_EmptyData        (TQ3PixmapMarkerData *    pixmapMarkerData);
  1476.  
  1477. EXTERN_API_C( TQ3Status )
  1478. Q3PixmapMarker_GetPosition        (TQ3GeometryObject         pixmapMarker,
  1479.                                  TQ3Point3D *            position);
  1480.  
  1481. EXTERN_API_C( TQ3Status )
  1482. Q3PixmapMarker_SetPosition        (TQ3GeometryObject         pixmapMarker,
  1483.                                  const TQ3Point3D *        position);
  1484.  
  1485. EXTERN_API_C( TQ3Status )
  1486. Q3PixmapMarker_GetXOffset        (TQ3GeometryObject         pixmapMarker,
  1487.                                  long *                    xOffset);
  1488.  
  1489. EXTERN_API_C( TQ3Status )
  1490. Q3PixmapMarker_SetXOffset        (TQ3GeometryObject         pixmapMarker,
  1491.                                  long                     xOffset);
  1492.  
  1493. EXTERN_API_C( TQ3Status )
  1494. Q3PixmapMarker_GetYOffset        (TQ3GeometryObject         pixmapMarker,
  1495.                                  long *                    yOffset);
  1496.  
  1497. EXTERN_API_C( TQ3Status )
  1498. Q3PixmapMarker_SetYOffset        (TQ3GeometryObject         pixmapMarker,
  1499.                                  long                     yOffset);
  1500.  
  1501. EXTERN_API_C( TQ3Status )
  1502. Q3PixmapMarker_GetPixmap        (TQ3GeometryObject         pixmapMarker,
  1503.                                  TQ3StoragePixmap *        pixmap);
  1504.  
  1505. EXTERN_API_C( TQ3Status )
  1506. Q3PixmapMarker_SetPixmap        (TQ3GeometryObject         pixmapMarker,
  1507.                                  const TQ3StoragePixmap * pixmap);
  1508.  
  1509.  
  1510.  
  1511.  
  1512. /******************************************************************************
  1513.  **                                                                             **
  1514.  **                        Point Data Structure Definitions                     **
  1515.  **                                                                             **
  1516.  *****************************************************************************/
  1517.  
  1518. struct TQ3PointData {
  1519.     TQ3Point3D                         point;
  1520.     TQ3AttributeSet                 pointAttributeSet;
  1521. };
  1522. typedef struct TQ3PointData                TQ3PointData;
  1523. /******************************************************************************
  1524.  **                                                                             **
  1525.  **                                Point Routines                                 **
  1526.  **                                                                             **
  1527.  *****************************************************************************/
  1528. EXTERN_API_C( TQ3GeometryObject )
  1529. Q3Point_New                        (const TQ3PointData *    pointData);
  1530.  
  1531. EXTERN_API_C( TQ3Status )
  1532. Q3Point_Submit                    (const TQ3PointData *    pointData,
  1533.                                  TQ3ViewObject             view);
  1534.  
  1535. EXTERN_API_C( TQ3Status )
  1536. Q3Point_GetData                    (TQ3GeometryObject         point,
  1537.                                  TQ3PointData *            pointData);
  1538.  
  1539. EXTERN_API_C( TQ3Status )
  1540. Q3Point_SetData                    (TQ3GeometryObject         point,
  1541.                                  const TQ3PointData *    pointData);
  1542.  
  1543. EXTERN_API_C( TQ3Status )
  1544. Q3Point_EmptyData                (TQ3PointData *            pointData);
  1545.  
  1546. EXTERN_API_C( TQ3Status )
  1547. Q3Point_SetPosition                (TQ3GeometryObject         point,
  1548.                                  const TQ3Point3D *        position);
  1549.  
  1550. EXTERN_API_C( TQ3Status )
  1551. Q3Point_GetPosition                (TQ3GeometryObject         point,
  1552.                                  TQ3Point3D *            position);
  1553.  
  1554.  
  1555.  
  1556.  
  1557. /******************************************************************************
  1558.  **                                                                             **
  1559.  **                        Polygon Data Structure Definitions                     **
  1560.  **                                                                             **
  1561.  *****************************************************************************/
  1562.  
  1563. struct TQ3PolygonData {
  1564.     unsigned long                     numVertices;
  1565.     TQ3Vertex3D *                    vertices;
  1566.     TQ3AttributeSet                 polygonAttributeSet;
  1567. };
  1568. typedef struct TQ3PolygonData            TQ3PolygonData;
  1569. /******************************************************************************
  1570.  **                                                                             **
  1571.  **                            Polygon Routines                                 **
  1572.  **                                                                             **
  1573.  *****************************************************************************/
  1574. EXTERN_API_C( TQ3GeometryObject )
  1575. Q3Polygon_New                    (const TQ3PolygonData *    polygonData);
  1576.  
  1577. EXTERN_API_C( TQ3Status )
  1578. Q3Polygon_Submit                (const TQ3PolygonData *    polygonData,
  1579.                                  TQ3ViewObject             view);
  1580.  
  1581. EXTERN_API_C( TQ3Status )
  1582. Q3Polygon_SetData                (TQ3GeometryObject         polygon,
  1583.                                  const TQ3PolygonData *    polygonData);
  1584.  
  1585. EXTERN_API_C( TQ3Status )
  1586. Q3Polygon_GetData                (TQ3GeometryObject         polygon,
  1587.                                  TQ3PolygonData *        polygonData);
  1588.  
  1589. EXTERN_API_C( TQ3Status )
  1590. Q3Polygon_EmptyData                (TQ3PolygonData *        polygonData);
  1591.  
  1592. EXTERN_API_C( TQ3Status )
  1593. Q3Polygon_GetVertexPosition        (TQ3GeometryObject         polygon,
  1594.                                  unsigned long             index,
  1595.                                  TQ3Point3D *            point);
  1596.  
  1597. EXTERN_API_C( TQ3Status )
  1598. Q3Polygon_SetVertexPosition        (TQ3GeometryObject         polygon,
  1599.                                  unsigned long             index,
  1600.                                  const TQ3Point3D *        point);
  1601.  
  1602. EXTERN_API_C( TQ3Status )
  1603. Q3Polygon_GetVertexAttributeSet    (TQ3GeometryObject         polygon,
  1604.                                  unsigned long             index,
  1605.                                  TQ3AttributeSet *        attributeSet);
  1606.  
  1607. EXTERN_API_C( TQ3Status )
  1608. Q3Polygon_SetVertexAttributeSet    (TQ3GeometryObject         polygon,
  1609.                                  unsigned long             index,
  1610.                                  TQ3AttributeSet         attributeSet);
  1611.  
  1612.  
  1613.  
  1614.  
  1615. /******************************************************************************
  1616.  **                                                                             **
  1617.  **                        Polyhedron Data Structure Definitions                 **
  1618.  **                                                                             **
  1619.  *****************************************************************************/
  1620.  
  1621. enum TQ3PolyhedronEdgeMasks {
  1622.     kQ3PolyhedronEdgeNone        = 0,
  1623.     kQ3PolyhedronEdge01            = 1 << 0,
  1624.     kQ3PolyhedronEdge12            = 1 << 1,
  1625.     kQ3PolyhedronEdge20            = 1 << 2,
  1626.     kQ3PolyhedronEdgeAll        = kQ3PolyhedronEdge01 | kQ3PolyhedronEdge12 | kQ3PolyhedronEdge20
  1627. };
  1628. typedef enum TQ3PolyhedronEdgeMasks TQ3PolyhedronEdgeMasks;
  1629.  
  1630.  
  1631. typedef unsigned long                     TQ3PolyhedronEdge;
  1632.  
  1633. struct TQ3PolyhedronEdgeData {
  1634.     unsigned long                     vertexIndices[2];
  1635.     unsigned long                     triangleIndices[2];
  1636.     TQ3AttributeSet                 edgeAttributeSet;
  1637. };
  1638. typedef struct TQ3PolyhedronEdgeData    TQ3PolyhedronEdgeData;
  1639.  
  1640. struct TQ3PolyhedronTriangleData {
  1641.     unsigned long                     vertexIndices[3];
  1642.     TQ3PolyhedronEdge                 edgeFlag;
  1643.     TQ3AttributeSet                 triangleAttributeSet;
  1644. };
  1645. typedef struct TQ3PolyhedronTriangleData TQ3PolyhedronTriangleData;
  1646.  
  1647. struct TQ3PolyhedronData {
  1648.     unsigned long                     numVertices;
  1649.     TQ3Vertex3D *                    vertices;
  1650.     unsigned long                     numEdges;
  1651.     TQ3PolyhedronEdgeData *            edges;
  1652.     unsigned long                     numTriangles;
  1653.     TQ3PolyhedronTriangleData *        triangles;
  1654.     TQ3AttributeSet                 polyhedronAttributeSet;
  1655. };
  1656. typedef struct TQ3PolyhedronData        TQ3PolyhedronData;
  1657. /******************************************************************************
  1658.  **                                                                             **
  1659.  **                                Polyhedron Routines                             **
  1660.  **                                                                             **
  1661.  *****************************************************************************/
  1662. EXTERN_API_C( TQ3GeometryObject )
  1663. Q3Polyhedron_New                (const TQ3PolyhedronData * polyhedronData);
  1664.  
  1665. EXTERN_API_C( TQ3Status )
  1666. Q3Polyhedron_Submit                (const TQ3PolyhedronData * polyhedronData,
  1667.                                  TQ3ViewObject             view);
  1668.  
  1669. EXTERN_API_C( TQ3Status )
  1670. Q3Polyhedron_SetData            (TQ3GeometryObject         polyhedron,
  1671.                                  const TQ3PolyhedronData * polyhedronData);
  1672.  
  1673. EXTERN_API_C( TQ3Status )
  1674. Q3Polyhedron_GetData            (TQ3GeometryObject         polyhedron,
  1675.                                  TQ3PolyhedronData *    polyhedronData);
  1676.  
  1677. EXTERN_API_C( TQ3Status )
  1678. Q3Polyhedron_EmptyData            (TQ3PolyhedronData *    polyhedronData);
  1679.  
  1680. EXTERN_API_C( TQ3Status )
  1681. Q3Polyhedron_SetVertexPosition    (TQ3GeometryObject         polyhedron,
  1682.                                  unsigned long             index,
  1683.                                  const TQ3Point3D *        point);
  1684.  
  1685. EXTERN_API_C( TQ3Status )
  1686. Q3Polyhedron_GetVertexPosition    (TQ3GeometryObject         polyhedron,
  1687.                                  unsigned long             index,
  1688.                                  TQ3Point3D *            point);
  1689.  
  1690. EXTERN_API_C( TQ3Status )
  1691. Q3Polyhedron_SetVertexAttributeSet (TQ3GeometryObject     polyhedron,
  1692.                                  unsigned long             index,
  1693.                                  TQ3AttributeSet         attributeSet);
  1694.  
  1695. EXTERN_API_C( TQ3Status )
  1696. Q3Polyhedron_GetVertexAttributeSet (TQ3GeometryObject     polyhedron,
  1697.                                  unsigned long             index,
  1698.                                  TQ3AttributeSet *        attributeSet);
  1699.  
  1700. EXTERN_API_C( TQ3Status )
  1701. Q3Polyhedron_GetTriangleData    (TQ3GeometryObject         polyhedron,
  1702.                                  unsigned long             triangleIndex,
  1703.                                  TQ3PolyhedronTriangleData * triangleData);
  1704.  
  1705. EXTERN_API_C( TQ3Status )
  1706. Q3Polyhedron_SetTriangleData    (TQ3GeometryObject         polyhedron,
  1707.                                  unsigned long             triangleIndex,
  1708.                                  const TQ3PolyhedronTriangleData * triangleData);
  1709.  
  1710. EXTERN_API_C( TQ3Status )
  1711. Q3Polyhedron_GetEdgeData        (TQ3GeometryObject         polyhedron,
  1712.                                  unsigned long             edgeIndex,
  1713.                                  TQ3PolyhedronEdgeData * edgeData);
  1714.  
  1715. EXTERN_API_C( TQ3Status )
  1716. Q3Polyhedron_SetEdgeData        (TQ3GeometryObject         polyhedron,
  1717.                                  unsigned long             edgeIndex,
  1718.                                  const TQ3PolyhedronEdgeData * edgeData);
  1719.  
  1720.  
  1721.  
  1722.  
  1723. /******************************************************************************
  1724.  **                                                                             **
  1725.  **                        PolyLine Data Structure Definitions                     **
  1726.  **                                                                             **
  1727.  *****************************************************************************/
  1728.  
  1729. struct TQ3PolyLineData {
  1730.     unsigned long                     numVertices;
  1731.     TQ3Vertex3D *                    vertices;
  1732.     TQ3AttributeSet *                segmentAttributeSet;
  1733.     TQ3AttributeSet                 polyLineAttributeSet;
  1734. };
  1735. typedef struct TQ3PolyLineData            TQ3PolyLineData;
  1736. /******************************************************************************
  1737.  **                                                                             **
  1738.  **                            PolyLine Routines                                 **
  1739.  **                                                                             **
  1740.  *****************************************************************************/
  1741. EXTERN_API_C( TQ3GeometryObject )
  1742. Q3PolyLine_New                    (const TQ3PolyLineData * polylineData);
  1743.  
  1744. EXTERN_API_C( TQ3Status )
  1745. Q3PolyLine_Submit                (const TQ3PolyLineData * polyLineData,
  1746.                                  TQ3ViewObject             view);
  1747.  
  1748. EXTERN_API_C( TQ3Status )
  1749. Q3PolyLine_SetData                (TQ3GeometryObject         polyLine,
  1750.                                  const TQ3PolyLineData * polyLineData);
  1751.  
  1752. EXTERN_API_C( TQ3Status )
  1753. Q3PolyLine_GetData                (TQ3GeometryObject         polyLine,
  1754.                                  TQ3PolyLineData *        polyLineData);
  1755.  
  1756. EXTERN_API_C( TQ3Status )
  1757. Q3PolyLine_EmptyData            (TQ3PolyLineData *        polyLineData);
  1758.  
  1759. EXTERN_API_C( TQ3Status )
  1760. Q3PolyLine_GetVertexPosition    (TQ3GeometryObject         polyLine,
  1761.                                  unsigned long             index,
  1762.                                  TQ3Point3D *            position);
  1763.  
  1764. EXTERN_API_C( TQ3Status )
  1765. Q3PolyLine_SetVertexPosition    (TQ3GeometryObject         polyLine,
  1766.                                  unsigned long             index,
  1767.                                  const TQ3Point3D *        position);
  1768.  
  1769. EXTERN_API_C( TQ3Status )
  1770. Q3PolyLine_GetVertexAttributeSet (TQ3GeometryObject     polyLine,
  1771.                                  unsigned long             index,
  1772.                                  TQ3AttributeSet *        attributeSet);
  1773.  
  1774. EXTERN_API_C( TQ3Status )
  1775. Q3PolyLine_SetVertexAttributeSet (TQ3GeometryObject     polyLine,
  1776.                                  unsigned long             index,
  1777.                                  TQ3AttributeSet         attributeSet);
  1778.  
  1779. EXTERN_API_C( TQ3Status )
  1780. Q3PolyLine_GetSegmentAttributeSet (TQ3GeometryObject     polyLine,
  1781.                                  unsigned long             index,
  1782.                                  TQ3AttributeSet *        attributeSet);
  1783.  
  1784. EXTERN_API_C( TQ3Status )
  1785. Q3PolyLine_SetSegmentAttributeSet (TQ3GeometryObject     polyLine,
  1786.                                  unsigned long             index,
  1787.                                  TQ3AttributeSet         attributeSet);
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793. /******************************************************************************
  1794.  **                                                                             **
  1795.  **                        Torus Data Structure Definitions                     **
  1796.  **                                                                             **
  1797.  *****************************************************************************/
  1798.  
  1799. struct TQ3TorusData {
  1800.     TQ3Point3D                         origin;
  1801.     TQ3Vector3D                     orientation;
  1802.     TQ3Vector3D                     majorRadius;
  1803.     TQ3Vector3D                     minorRadius;
  1804.     float                             ratio;
  1805.     float                             uMin;
  1806.     float                             uMax;
  1807.     float                             vMin;
  1808.     float                             vMax;
  1809.     TQ3EndCap                         caps;
  1810.     TQ3AttributeSet                 interiorAttributeSet;
  1811.     TQ3AttributeSet                 torusAttributeSet;
  1812. };
  1813. typedef struct TQ3TorusData                TQ3TorusData;
  1814. /******************************************************************************
  1815.  **                                                                             **
  1816.  **                                Torus Routines                                 **
  1817.  **                                                                             **
  1818.  *****************************************************************************/
  1819. EXTERN_API_C( TQ3GeometryObject )
  1820. Q3Torus_New                        (const TQ3TorusData *    torusData);
  1821.  
  1822. EXTERN_API_C( TQ3Status )
  1823. Q3Torus_Submit                    (const TQ3TorusData *    torusData,
  1824.                                  TQ3ViewObject             view);
  1825.  
  1826. EXTERN_API_C( TQ3Status )
  1827. Q3Torus_SetData                    (TQ3GeometryObject         torus,
  1828.                                  const TQ3TorusData *    torusData);
  1829.  
  1830. EXTERN_API_C( TQ3Status )
  1831. Q3Torus_GetData                    (TQ3GeometryObject         torus,
  1832.                                  TQ3TorusData *            torusData);
  1833.  
  1834. EXTERN_API_C( TQ3Status )
  1835. Q3Torus_SetOrigin                (TQ3GeometryObject         torus,
  1836.                                  const TQ3Point3D *        origin);
  1837.  
  1838. EXTERN_API_C( TQ3Status )
  1839. Q3Torus_SetOrientation            (TQ3GeometryObject         torus,
  1840.                                  const TQ3Vector3D *    orientation);
  1841.  
  1842. EXTERN_API_C( TQ3Status )
  1843. Q3Torus_SetMajorRadius            (TQ3GeometryObject         torus,
  1844.                                  const TQ3Vector3D *    majorRadius);
  1845.  
  1846. EXTERN_API_C( TQ3Status )
  1847. Q3Torus_SetMinorRadius            (TQ3GeometryObject         torus,
  1848.                                  const TQ3Vector3D *    minorRadius);
  1849.  
  1850. EXTERN_API_C( TQ3Status )
  1851. Q3Torus_SetRatio                (TQ3GeometryObject         torus,
  1852.                                  float                     ratio);
  1853.  
  1854. EXTERN_API_C( TQ3Status )
  1855. Q3Torus_GetOrigin                (TQ3GeometryObject         torus,
  1856.                                  TQ3Point3D *            origin);
  1857.  
  1858. EXTERN_API_C( TQ3Status )
  1859. Q3Torus_GetOrientation            (TQ3GeometryObject         torus,
  1860.                                  TQ3Vector3D *            orientation);
  1861.  
  1862. EXTERN_API_C( TQ3Status )
  1863. Q3Torus_GetMajorRadius            (TQ3GeometryObject         torus,
  1864.                                  TQ3Vector3D *            majorRadius);
  1865.  
  1866. EXTERN_API_C( TQ3Status )
  1867. Q3Torus_GetMinorRadius            (TQ3GeometryObject         torus,
  1868.                                  TQ3Vector3D *            minorRadius);
  1869.  
  1870. EXTERN_API_C( TQ3Status )
  1871. Q3Torus_GetRatio                (TQ3GeometryObject         torus,
  1872.                                  float *                ratio);
  1873.  
  1874. EXTERN_API_C( TQ3Status )
  1875. Q3Torus_EmptyData                (TQ3TorusData *            torusData);
  1876.  
  1877.  
  1878.  
  1879.  
  1880. /******************************************************************************
  1881.  **                                                                             **
  1882.  **                        Triangle Data Structure Definitions                     **
  1883.  **                                                                             **
  1884.  *****************************************************************************/
  1885.  
  1886. struct TQ3TriangleData {
  1887.     TQ3Vertex3D                     vertices[3];
  1888.     TQ3AttributeSet                 triangleAttributeSet;
  1889. };
  1890. typedef struct TQ3TriangleData            TQ3TriangleData;
  1891. /******************************************************************************
  1892.  **                                                                             **
  1893.  **                            Triangle Routines                                 **
  1894.  **                                                                             **
  1895.  *****************************************************************************/
  1896. EXTERN_API_C( TQ3GeometryObject )
  1897. Q3Triangle_New                    (const TQ3TriangleData * triangleData);
  1898.  
  1899. EXTERN_API_C( TQ3Status )
  1900. Q3Triangle_Submit                (const TQ3TriangleData * triangleData,
  1901.                                  TQ3ViewObject             view);
  1902.  
  1903. EXTERN_API_C( TQ3Status )
  1904. Q3Triangle_SetData                (TQ3GeometryObject         triangle,
  1905.                                  const TQ3TriangleData * triangleData);
  1906.  
  1907. EXTERN_API_C( TQ3Status )
  1908. Q3Triangle_GetData                (TQ3GeometryObject         triangle,
  1909.                                  TQ3TriangleData *        triangleData);
  1910.  
  1911. EXTERN_API_C( TQ3Status )
  1912. Q3Triangle_EmptyData            (TQ3TriangleData *        triangleData);
  1913.  
  1914. EXTERN_API_C( TQ3Status )
  1915. Q3Triangle_GetVertexPosition    (TQ3GeometryObject         triangle,
  1916.                                  unsigned long             index,
  1917.                                  TQ3Point3D *            point);
  1918.  
  1919. EXTERN_API_C( TQ3Status )
  1920. Q3Triangle_SetVertexPosition    (TQ3GeometryObject         triangle,
  1921.                                  unsigned long             index,
  1922.                                  const TQ3Point3D *        point);
  1923.  
  1924. EXTERN_API_C( TQ3Status )
  1925. Q3Triangle_GetVertexAttributeSet (TQ3GeometryObject     triangle,
  1926.                                  unsigned long             index,
  1927.                                  TQ3AttributeSet *        attributeSet);
  1928.  
  1929. EXTERN_API_C( TQ3Status )
  1930. Q3Triangle_SetVertexAttributeSet (TQ3GeometryObject     triangle,
  1931.                                  unsigned long             index,
  1932.                                  TQ3AttributeSet         attributeSet);
  1933.  
  1934.  
  1935.  
  1936.  
  1937. /******************************************************************************
  1938.  **                                                                             **
  1939.  **                        TriGrid Data Structure Definitions                     **
  1940.  **                                                                             **
  1941.  *****************************************************************************/
  1942.  
  1943. struct TQ3TriGridData {
  1944.     unsigned long                     numRows;
  1945.     unsigned long                     numColumns;
  1946.     TQ3Vertex3D *                    vertices;
  1947.     TQ3AttributeSet *                facetAttributeSet;
  1948.     TQ3AttributeSet                 triGridAttributeSet;
  1949. };
  1950. typedef struct TQ3TriGridData            TQ3TriGridData;
  1951. /******************************************************************************
  1952.  **                                                                             **
  1953.  **                                TriGrid Routines                             **
  1954.  **                                                                             **
  1955.  *****************************************************************************/
  1956. EXTERN_API_C( TQ3GeometryObject )
  1957. Q3TriGrid_New                    (const TQ3TriGridData *    triGridData);
  1958.  
  1959. EXTERN_API_C( TQ3Status )
  1960. Q3TriGrid_Submit                (const TQ3TriGridData *    triGridData,
  1961.                                  TQ3ViewObject             view);
  1962.  
  1963. EXTERN_API_C( TQ3Status )
  1964. Q3TriGrid_SetData                (TQ3GeometryObject         triGrid,
  1965.                                  const TQ3TriGridData *    triGridData);
  1966.  
  1967. EXTERN_API_C( TQ3Status )
  1968. Q3TriGrid_GetData                (TQ3GeometryObject         triGrid,
  1969.                                  TQ3TriGridData *        triGridData);
  1970.  
  1971. EXTERN_API_C( TQ3Status )
  1972. Q3TriGrid_EmptyData                (TQ3TriGridData *        triGridData);
  1973.  
  1974. EXTERN_API_C( TQ3Status )
  1975. Q3TriGrid_GetVertexPosition        (TQ3GeometryObject         triGrid,
  1976.                                  unsigned long             rowIndex,
  1977.                                  unsigned long             columnIndex,
  1978.                                  TQ3Point3D *            position);
  1979.  
  1980. EXTERN_API_C( TQ3Status )
  1981. Q3TriGrid_SetVertexPosition        (TQ3GeometryObject         triGrid,
  1982.                                  unsigned long             rowIndex,
  1983.                                  unsigned long             columnIndex,
  1984.                                  const TQ3Point3D *        position);
  1985.  
  1986. EXTERN_API_C( TQ3Status )
  1987. Q3TriGrid_GetVertexAttributeSet    (TQ3GeometryObject         triGrid,
  1988.                                  unsigned long             rowIndex,
  1989.                                  unsigned long             columnIndex,
  1990.                                  TQ3AttributeSet *        attributeSet);
  1991.  
  1992. EXTERN_API_C( TQ3Status )
  1993. Q3TriGrid_SetVertexAttributeSet    (TQ3GeometryObject         triGrid,
  1994.                                  unsigned long             rowIndex,
  1995.                                  unsigned long             columnIndex,
  1996.                                  TQ3AttributeSet         attributeSet);
  1997.  
  1998. EXTERN_API_C( TQ3Status )
  1999. Q3TriGrid_GetFacetAttributeSet    (TQ3GeometryObject         triGrid,
  2000.                                  unsigned long             faceIndex,
  2001.                                  TQ3AttributeSet *        facetAttributeSet);
  2002.  
  2003. EXTERN_API_C( TQ3Status )
  2004. Q3TriGrid_SetFacetAttributeSet    (TQ3GeometryObject         triGrid,
  2005.                                  unsigned long             faceIndex,
  2006.                                  TQ3AttributeSet         facetAttributeSet);
  2007.  
  2008.  
  2009.  
  2010.  
  2011. /******************************************************************************
  2012.  **                                                                             **
  2013.  **                        TriMesh Data Structure Definitions                     **
  2014.  **                                                                             **
  2015.  *****************************************************************************/
  2016.  
  2017. struct TQ3TriMeshTriangleData {
  2018.     unsigned long                     pointIndices[3];
  2019. };
  2020. typedef struct TQ3TriMeshTriangleData    TQ3TriMeshTriangleData;
  2021.  
  2022. struct TQ3TriMeshEdgeData {
  2023.     unsigned long                     pointIndices[2];
  2024.     unsigned long                     triangleIndices[2];
  2025. };
  2026. typedef struct TQ3TriMeshEdgeData        TQ3TriMeshEdgeData;
  2027.  
  2028. struct TQ3TriMeshAttributeData {
  2029.     TQ3AttributeType                 attributeType;                /* The type of attribute          */
  2030.     void *                            data;                        /* Pointer to the contiguous     */
  2031.                                                                 /* attribute data.                 */
  2032.     char *                            attributeUseArray;            /* This is only used with custom */
  2033.                                                                 /* attributes                      */
  2034. };
  2035. typedef struct TQ3TriMeshAttributeData    TQ3TriMeshAttributeData;
  2036.  
  2037. struct TQ3TriMeshData {
  2038.     TQ3AttributeSet                 triMeshAttributeSet;
  2039.  
  2040.     unsigned long                     numTriangles;
  2041.     TQ3TriMeshTriangleData *        triangles;
  2042.  
  2043.     unsigned long                     numTriangleAttributeTypes;
  2044.     TQ3TriMeshAttributeData *        triangleAttributeTypes;
  2045.  
  2046.     unsigned long                     numEdges;
  2047.     TQ3TriMeshEdgeData *            edges;
  2048.  
  2049.     unsigned long                     numEdgeAttributeTypes;
  2050.     TQ3TriMeshAttributeData *        edgeAttributeTypes;
  2051.  
  2052.     unsigned long                     numPoints;
  2053.     TQ3Point3D *                    points;
  2054.  
  2055.     unsigned long                     numVertexAttributeTypes;
  2056.     TQ3TriMeshAttributeData *        vertexAttributeTypes;
  2057.  
  2058.     TQ3BoundingBox                     bBox;
  2059. };
  2060. typedef struct TQ3TriMeshData            TQ3TriMeshData;
  2061. /******************************************************************************
  2062.  **                                                                             **
  2063.  **                            TriMesh Routines                                 **
  2064.  **                                                                             **
  2065.  *****************************************************************************/
  2066. EXTERN_API_C( TQ3GeometryObject )
  2067. Q3TriMesh_New                    (const TQ3TriMeshData *    triMeshData);
  2068.  
  2069. EXTERN_API_C( TQ3Status )
  2070. Q3TriMesh_Submit                (const TQ3TriMeshData *    triMeshData,
  2071.                                  TQ3ViewObject             view);
  2072.  
  2073. EXTERN_API_C( TQ3Status )
  2074. Q3TriMesh_SetData                (TQ3GeometryObject         triMesh,
  2075.                                  const TQ3TriMeshData *    triMeshData);
  2076.  
  2077. EXTERN_API_C( TQ3Status )
  2078. Q3TriMesh_GetData                (TQ3GeometryObject         triMesh,
  2079.                                  TQ3TriMeshData *        triMeshData);
  2080.  
  2081. EXTERN_API_C( TQ3Status )
  2082. Q3TriMesh_EmptyData                (TQ3TriMeshData *        triMeshData);
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088. #if PRAGMA_ENUM_ALWAYSINT
  2089.     #pragma enumsalwaysint reset
  2090. #elif PRAGMA_ENUM_OPTIONS
  2091.     #pragma option enum=reset
  2092. #elif defined(PRAGMA_ENUM_PACK__QD3DGEOMETRY__)
  2093.     #pragma options(pack_enums)
  2094. #endif
  2095.  
  2096. #if PRAGMA_STRUCT_ALIGN
  2097.     #pragma options align=reset
  2098. #elif PRAGMA_STRUCT_PACKPUSH
  2099.     #pragma pack(pop)
  2100. #elif PRAGMA_STRUCT_PACK
  2101.     #pragma pack()
  2102. #endif
  2103.  
  2104. #ifdef PRAGMA_IMPORT_OFF
  2105. #pragma import off
  2106. #elif PRAGMA_IMPORT
  2107. #pragma import reset
  2108. #endif
  2109.  
  2110. #ifdef __cplusplus
  2111. }
  2112. #endif
  2113.  
  2114. #endif /* __QD3DGEOMETRY__ */
  2115.  
  2116.